package com.itheima.job;

import com.itheima.service.OrderService;
import lombok.extern.slf4j.Slf4j;

import java.util.Calendar;
import java.util.Date;
import java.util.List;

@Slf4j
public class ClearOrderDateJob {

    OrderService orderService;

    public void setOrderService(OrderService orderService) {
        this.orderService = orderService;
    }

    /**
     * 定时清理预约信息
     *      1. 获取上个月最后一天
     *      2. 获取所有的预约信息的预约时间
     *      3. 遍历获取到的预约信息的预约时间与上个月最后一天的时间进行比较
     *          如果小于上个月最后一天，就删除该预约信息
     */
    public void clearOrderDateJob(){

        //1.获取上个月最后一天
        //1.1 获取calendar对象
        Calendar calendar = Calendar.getInstance();
        //1.2 设置本月第一天
        calendar.set(Calendar.DAY_OF_MONTH,1);
        //1.3 减一天，获取到上个月最后一天
        calendar.add(Calendar.DATE,-1);
        //1.4 转成毫秒值
        long lastMonthOfDayTime = calendar.getTime().getTime();

        //2. 获取数据库中所有的预约信息的预约时间
        //2.1 调用数据访问层查询所有
        List<Date> allOrderDateList = orderService.findAllOrderDate();
        //2.2 遍历，循环读取集合中是时间
        for (Date orderDate : allOrderDateList) {
            //2.3 将遍历出来的预约时间转换成毫秒值
            long orderDateTime = orderDate.getTime();
            //3. 比较毫秒值
            if(orderDateTime < lastMonthOfDayTime) {
                //3.1 如果预约时间小于上个月最后一天，就删除
                orderService.delByOrderDate(orderDate);
            }
        }
    }
}
